The inventive concept relates to coding/decoding methods that may be used to avoid errors in data stored by semiconductor memory devices. More particularly, the inventive concept relates to coding/decoding methods that may be used in a restricted multi-level memory system.
The available memory space provided by a semiconductor memory device may be logically divided into a number of blocks. Each block includes a plurality of constituent word lines, and each word line is operatively coupled to a set of memory cells. Memory cells in many contemporary semiconductor memory devices may be configured to operate as single-level memory cells (SLC) capable of storing binary data, or as multi-level memory cells (MLC) capable of storing multi-level data (i.e., two or more data bits per memory cell). As one might expect, the complexity involved in storing multi-level data in an array of MLC is considerable. As has been widely appreciated, the overall “data pattern” with which data becomes stored across an array of memory cells may influence a memory system's ability to accurately read and provide the stored data during a subsequently performed read operation. That is, certain data patterns may be errantly read due to certain coupling effect between vertically and horizontally adjacent (or proximate) memory cells in an array of memory cells. Accordingly, data coding/decoding techniques may be needed to avoid the possibility of problematic data patterns causing errors during read operations.